#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct student {
    int id;//学号
	char name[20];//姓名
	char sex[3];//性别
};
    int maxindex=-1;//定义存储当前的最大索引
    FILE *fp;//定义文件指针，操作文件
//欢迎函数
void welcome()
{
	printf("|---欢迎使用学生成绩管理系统---|\n");
	printf("--------------------------------\n");
	printf("\n");
}
//主菜单
void mainmenu()
{
	//循环显示主业务
	//提供选择项数
	//根据输入选择项调用函数
	int select = 0;//选择
    while(1){
		printf("|--------------------------|\n");
		printf("|     1.增加学生信息       |\n");
		printf("|     2.删除学生信息       |\n");
		printf("|     3.修改学生信息       |\n");
		printf("|     4.展示学生信息       |\n");
		printf("|     0.退出系统           |\n");
		printf("|--------------------------|\n");
		printf("        请选择业务          \n");
		scanf("%d",&select);
		switch (select)
		{
			case 1:
				addStudent();
				break;
			case 2:
				delStudent();
				break;
			case 3:
				changeStudent();
				break;
			case 4:
				show_Student();
				break;
			case 0:
				exit(0);
			default:
				printf("您的选择有误，请重新选择\n");
		}
	}
}
//增加
int addStudent(struct student s[],int n)//地址，数量
{
	printf("----------增加学生信息--------\n");
    //void show_Student (struct student s[],int n);
    
	fflush(stdin);//清空缓冲区
	printf("学号：");
    scanf("%d\n",&s[n].id);
    fflush(stdin);
    printf("姓名：\n");
	gets(s[n].name);
    fflush(stdin);
    printf("性别：\n");
    gets(s[n].sex);
    n++;
    if (writeData()==1){
    	printf("增加成功！\n");
	}
	else{
		printf("增加失败！\n");
	}
    //show_Student(s,n);
    return n;
}
//删除
int delStudent(struct student s[],int n){
	
	}	
}
//修改
void changeStudent(struct student s[],int n){
	
}
//展示所有学生信息
void show_Student(struct student s[],int n)
{
	int i;
	for (i=0;i<n;i++){
		//printf("姓名:%s, 学号:%s, 性别:%s\n",s[i].name,s[i].id,s[i],sex);
	}
}
//读文件
int readData(struct student s[])
{
	int i=0;//定义读取文件的行数
	if ((fp=fopen("studentinfo.txt","r"))==NULL)
	{
		//第一次运行需要创建新文件并且返回-1
		fp=fopen("studentinfo.txt","w");
		return -1;
	}
	while(!feof(fp))
	{
		fscanf(fp,"%d  %s  %s",&s[i].id,s[i].name,s[i].sex);
		i++;
	}
	fclose(fp);
	return i-2;//因为多读取一行空行 索引从0开始
}
//写文件（增删改操作都需要写文件）
int writeData(struct student s[],int i)
{
	i=0;
	if ((fp=fopen("studentinfo.txt","w"))==NULL)
	{
		printf("打开文件失败！");
		return 0;//失败返回0
	}
	//遍历数组循环操作
	for(i=0;i<=maxindex;i++)
	{
		fprintf(fp,"%d  %s  %s\n",s[i].id,s[i].name,s[i].sex);
	}
	fclose(fp);
	return 1;//成功返回1
}
//根据学号查找索引 查找学生
int findindex(struct student s[],int id)
{
	int index=-1;
	int i=0;
	for (i=0;i<=maxindex;i++)
	{
		if(s[i].id==id)
		{
			index=i;//记录当前索引
			break;
		}
	}
	return index;
}
//主函数
int main(int argc, char *argv[]) {
    struct student s[1000];    
	int num =0;//学生数量 初始化
	welcome();
	//maxindex=readData();//读取文件
	mainmenu();
	num = addStudent(s,num);
	num = delStudent(s,num);
//	num = changeStu7dent(s,num);
   
	return 0;
}
